package _03oop

/**
 * 默认就是public类型
 * 默认继承GroovyObject java继承Object
 * 所有类型都为对象类型 java int== groovy integer
 */

/**
 * 如果调用找不到方法
 * 先从metaClass中查找该方法没有则查看是否重写了methodMissing如果没有
 * 再查找是否重写了invokeMethod方法如果没有则异常
 */
class Person implements Run {
    String name
    Integer age

    def say(String what) {
        println "say ${what}"
    }

    @Override
    void run() {
        println "${name} run"
    }

    def methodMissing(String s, Object o) {
        println "${s} methodMissing"
    }

    @Override
    def invokeMethod(String s, Object o) {
        println "${s} invokeMethod"
    }
}
